package com.linkage.jz.bankruptcy.net;


import com.google.gson.JsonObject;
import com.linkage.jz.bankruptcy.BankruptcyApp;
import com.linkage.jz.bankruptcy.bean.ZQApplyDraft;

import java.util.Map;

import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import rx.Observable;

public interface AFAPIService {


    /**
     * 获取用户地址列表
     *
     * @param userId 用户ID
     */
    @FormUrlEncoded
    @POST("v1/open/api/user/address")
    Observable<JsonObject> getAddressList(
            @Field("userToken") String userToken,
            @Field("userId") String userId
    );

    /**
     * 文件上传
     *
     * @param userToken 用户token
     * @param Filedata  文件
     */
    @Multipart
    @POST("v1/open/file/upload/image")
    Observable<JsonObject> uploadFile(
            @Part("userToken") RequestBody userToken,
            @Part MultipartBody.Part Filedata
    );

    /**
     * 获取讨论列表
     *
     * @param userToken  用户token
     * @param keywords   查询关键字
     * @param pageNumber 页码
     * @param pageSize   每页条数
     */
    @FormUrlEncoded
    @POST("v1/open/api/project/myProjectList")
    Observable<JsonObject> getMyProList(
            @Field("userToken") String userToken,
            @Field("keywords") String keywords,
            @Field("pageNumber") int pageNumber,
            @Field("pageSize") int pageSize
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/fetchCreditorInfoTemp")
    Observable<JsonObject> fetchCreditorInfoTemp(
            @Field("userToken") String userToken,
            @Field("creditorId") String creditorId,
            @Field("projectId") String projectId,
            @Field("type") String type
    );

    /**
     * 获取项目信息
     *
     * @param userToken 用户token
     * @param projectId 项目ID
     */
    @FormUrlEncoded
    @POST("v1/open/api/project/getDetailInfo")
    Observable<JsonObject> getProjectDetailInfo(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId
    );

    @FormUrlEncoded
    @POST("v1//open/api/cms/express/list")
    Observable<JsonObject> getExpressList(
            @Field("userToken") String userToken

    );



    @FormUrlEncoded
    @POST("v1/open/api/creditor/getProjetContact")
    Observable<JsonObject> getProjetContact(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/checkMobileInProject")
    Observable<JsonObject> checkMobileInProject(
            @Field("userToken") String userToken,
            @Field("mobile") String mobile,
            @Field("projectId") String projectId
    );


    @FormUrlEncoded
    @POST("v1/open/api/creditor/countNeedVerify")
    Observable<JsonObject> countNeedVerify(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId
    );




    /**
     * 获取讨论列表
     *
     * @param userToken  用户token
     * @param projectId  项目Id
     * @param pageNumber 页码
     * @param pageSize   每页条数
     */
    @FormUrlEncoded
    @POST("v1/open/api/discussion/list")
    Observable<JsonObject> getTalkList(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("pageNumber") int pageNumber,
            @Field("pageSize") int pageSize
    );

    /**
     * 获取讨论详情
     *
     * @param userToken  用户token
     * @param projectId  项目Id
     * @param pageNumber 页码
     * @param pageSize   每页条数
     */
    @FormUrlEncoded
    @POST("v1/open/api/discussion/detail")
    Observable<JsonObject> getTalkDetail(
            @Field("userToken") String userToken,
            @Field("subjectId") String projectId,
            @Field("pageNumber") int pageNumber,
            @Field("pageSize") int pageSize
    );

    /**
     * 发布讨论
     *
     * @param userToken       用户token
     * @param projectId       项目Id
     * @param subjectTitle    话题标题
     * @param subjectDescribe 话题描述
     * @param subjectType     话题类型 0-债委会话题; 1-债权人话题
     * @param participantIds  参与人员id列表
     * @param browserIds      浏览人员id列表
     * @param files           附件 [{"filename":"附件1.jpg","filepath":"上传附件url","filesize":12345}, {"filename":"附件2
     *                        .jpg","filepath":"上传附件url","filesize":12345}]
     */
    @FormUrlEncoded
    @POST("v1/open/api/discussion/release")
    Observable<JsonObject> sendTalk(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("subjectTitle") String subjectTitle,
            @Field("subjectDescribe") String subjectDescribe,
            @Field("subjectType") int subjectType,
            @Field("participantIds") String participantIds,
            @Field("browserIds") String browserIds,
            @Field("files") String files
    );

    /**
     * 发布讨论
     *
     * @param userToken       用户token
     * @param projectId       项目Id
     * @param subjectTitle    话题标题
     * @param subjectDescribe 话题描述
     *                        //     * @param subjectType     话题类型 0-债委会话题; 1-债权人话题
     *                        //     * @param participantIds  参与人员id列表
     *                        //     * @param browserIds      浏览人员id列表
     * @param files           附件 [{"filename":"附件1.jpg","filepath":"上传附件url","filesize":12345}, {"filename":"附件2
     *                        .jpg","filepath":"上传附件url","filesize":12345}]
     */
    @FormUrlEncoded
    @POST("v1/open/api/discussion/edit")
    Observable<JsonObject> editTalk(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("subjectId") String subjectId,
            @Field("subjectTitle") String subjectTitle,
            @Field("subjectDescribe") String subjectDescribe,
            //            @Field("subjectType") int subjectType,
            //            @Field("participantIds") String participantIds,
            //            @Field("browserIds") String browserIds,
            @Field("files") String files
    );


    /**
     * 获取讨论详情的回复列表
     *
     * @param subjectId  话题Id
     * @param pageNumber 页码
     * @param pageSize   每页条数
     */
    @FormUrlEncoded
    @POST("v1/open/api/discussion/replyList")
    Observable<JsonObject> getTalkReplyList(
            @Field("userToken") String userToken,
            @Field("subjectId") String subjectId,
            @Field("pageNumber") int pageNumber,
            @Field("pageSize") int pageSize
    );

    /**
     * 获取模板文件
     *

     */
    @FormUrlEncoded
    @POST("v1//open/api/creditor/getTemplate")
    Observable<JsonObject> getTemplate(
            @Field("userToken") String userToken,
            @Field("type") int type
    );


    /**
     * 发表话题回复
     *
     * @param subjectId    话题Id
     * @param replyContent 回复内容
     * @param userToken    用户token
     */
    @FormUrlEncoded
    @POST("v1/open/api/discussion/reply")
    Observable<JsonObject> sendTalkReply(
            @Field("subjectId") String subjectId,
            @Field("replyContent") String replyContent,
            @Field("userToken") String userToken
    );

    /**
     * 删除话题
     *
     * @param id 话题id
     */
    @FormUrlEncoded
    @POST("v1/open/api/discussion/deleteSubject")
    Observable<JsonObject> deleteTalk(
            @Field("userToken") String userToken,
            @Field("id") String id
    );

    /**
     * 删除话题回复
     *
     * @param id 回复id
     */
    @FormUrlEncoded
    @POST("v1/open/api/discussion/deleteReplyContent")
    Observable<JsonObject> deleteTalkReply(
            @Field("userToken") String userToken,
            @Field("id") String id
    );

    /**
     * 禁言话题回复
     *
     * @param subjectId 话题id
     * @param sysUserId 用户id
     */
    @FormUrlEncoded
    @POST("v1/open/api/discussion/banned")
    Observable<JsonObject> bannedTalkReply(
            @Field("userToken") String userToken,
            @Field("subjectId") String subjectId,
            @Field("creditorId") String sysUserId
    );


    /**
     * 话题人员列表
     *
     * @param subjectId  话题id
     * @param searchName 检索字符串
     * @param type       类型 0-参与人员 1-可浏览人员
     * @param pageNumber 页码
     * @param pageSize   每页条数
     */
    @FormUrlEncoded
    @POST("v1/open/api/discussion/participants")
    Observable<JsonObject> getParticipantList(
            @Field("userToken") String userToken,
            @Field("subjectId") String subjectId,
            @Field("searchName") String searchName,
            @Field("type") int type,
            @Field("pageNumber") int pageNumber,
            @Field("pageSize") int pageSize
    );


    /**
     * 删除参与人员
     *
     * @param projectId      项目id
     * @param subjectId      话题id
     * @param type           类型 0-参与人员 1-可浏览人员
     * @param participantIds 人员id列表
     */
    @FormUrlEncoded
    @POST("v1/open/api/discussion/addParticipants")
    Observable<JsonObject> addTalkMember(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("subjectId") String subjectId,
            @Field("type") int type,
            @Field("participantIds") String participantIds
    );

    /**
     * 删除人员
     *
     * @param id 人员ID
     */
    @FormUrlEncoded
    @POST("v1/open/api/discussion/deleteParticipant")
    Observable<JsonObject> deleteTalkMember(
            @Field("userToken") String userToken,
            @Field("id") String id
    );


    /**
     * 获取任务列表
     *
     * @param userToken  用户token
     * @param projectId  项目Id
     * @param isManager  是否管理组成员
     * @param pageNumber 页码
     * @param pageSize   每页条数
     */
    @FormUrlEncoded
    @POST("v1/open/api/task/list")
    Observable<JsonObject> getTaskList(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("isManager") int isManager,
            @Field("pageNumber") int pageNumber,
            @Field("pageSize") int pageSize
    );


    @FormUrlEncoded
    @POST("v1/open/api/creditor/operationLog/read")
    Observable<JsonObject> operationLogread(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("recordId") String recordId
    );
    /**
     * 创建任务
     *
     * @param userToken    用户token
     * @param projectId    项目Id
     * @param taskName     任务名称
     * @param taskContent  任务内容
     * @param memberId     任务执行人id
     * @param deadlineTime 任务截止时间
     * @param files        附件 [{"filename":"附件1.jpg","filepath":"上传附件url","filesize":12345}, {"filename":"附件2
     *                     .jpg","filepath":"上传附件url","filesize":12345}]
     */
    @FormUrlEncoded
    @POST("v1/open/api/task/create")
    Observable<JsonObject> sendTask(
            @Field("userToken") String userToken,
            @Field("bankruptcyProjectId") String projectId,
            @Field("taskName") String taskName,
            @Field("taskContent") String taskContent,
            @Field("sysUserId") String sysUserId,
            @Field("memberId") String memberId,
            @Field("deadlineTime") long deadlineTime,
            @Field("files") String files
    );

    /**
     * 编辑任务
     *
     * @param userToken    用户token
     * @param taskId       任务Id
     * @param projectId    项目Id
     * @param taskName     任务名称
     * @param taskContent  任务内容
     * @param deadlineTime 任务截止时间
     * @param files        附件 [{"filename":"附件1.jpg","filepath":"上传附件url","filesize":12345}, {"filename":"附件2
     *                     .jpg","filepath":"上传附件url","filesize":12345}]
     */
    @FormUrlEncoded
    @POST("v1/open/api/task/edit")
    Observable<JsonObject> editTask(
            @Field("userToken") String userToken,
            @Field("id") String taskId,
            @Field("bankruptcyProjectId") String projectId,
            @Field("taskName") String taskName,
            @Field("taskContent") String taskContent,
            @Field("sysUserId") String sysUserId,
            @Field("memberId") String memberId,
            @Field("deadlineTime") long deadlineTime,
            @Field("files") String files
    );


    /**
     * 获取任务详情
     *
     * @param userToken 用户token
     * @param id        任务id
     */
    @FormUrlEncoded
    @POST("v1/open/api/task/detail")
    Observable<JsonObject> getTaskDetail(
            @Field("userToken") String userToken,
            @Field("id") String id
    );

    /**
     * 确认完成任务
     *
     * @param id              任务id
     * @param feedbackMessage 回馈信息
     */
    @FormUrlEncoded
    @POST("v1/open/api/task/complete")
    Observable<JsonObject> completeTask(
            @Field("userToken") String userToken,
            @Field("id") String id,
            @Field("feedbackMessage") String feedbackMessage
    );

    /**
     * 删除任务
     *
     * @param id 任务id
     */
    @FormUrlEncoded
    @POST("v1/open/api/task/delete")
    Observable<JsonObject> deleteTask(
            @Field("userToken") String userToken,
            @Field("id") String id
    );

    /**
     * 获取公示列表
     *
     * @param userToken 用户token
     * @param projectId 项目Id
     */
    @FormUrlEncoded
    @POST("v1/open/api/project/public/getInfoList")
    Observable<JsonObject> getPublicList(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId
    );

    /**
     * 获取公示详情
     *
     * @param userToken 用户token
     * @param publicId  任务id
     */
    @FormUrlEncoded
    @POST("v1/open/api/project/public/getDetailInfo")
    Observable<JsonObject> getPublicDetail(
            @Field("userToken") String userToken,
            @Field("publicId") String publicId
    );

    /**
     * 删除公示
     *
     * @param userToken 用户token
     * @param publicId  公示id
     */
    @FormUrlEncoded
    @POST("v1/open/api/project/public/delPublicInfo")
    Observable<JsonObject> deletePublic(
            @Field("userToken") String userToken,
            @Field("publicId") String publicId
    );


    /**
     * 发布公示
     *
     * @param userToken           用户token
     * @param bankruptcyProjectId 项目Id
     * @param publicName          公示名称
     * @param publicDetail        公示描述
     * @param projectScheduleId   项目进度节点ID
     * @param publicType          公示分类
     * @param publicMemberListStr 公示对象 [ { "creditorId":"1"}, {"creditorId":"2" } ]
     * @param fileListStr         附件 [{"filename":"附件1.jpg","filepath":"上传附件url","filesize":12345}, {"filename":"附件2
     *                            .jpg","filepath":"上传附件url","filesize":12345}]
     */
    @FormUrlEncoded
    @POST("v1/open/api/project/public/savePublicInfo")
    Observable<JsonObject> createPublic(
            @Field("userToken") String userToken,
            @Field("bankruptcyProjectId") String bankruptcyProjectId,
            @Field("publicName") String publicName,
            @Field("publicDetail") String publicDetail,
            @Field("projectScheduleId") String projectScheduleId,
            @Field("publicType") String publicType,
            @Field("publicMemberListStr") String publicMemberListStr,
            @Field("fileListStr") String fileListStr
    );

    /**
     * 编辑公示
     *
     * @param userToken           用户token
     * @param id                  id
     * @param bankruptcyProjectId 项目Id
     * @param publicName          公示名称
     * @param publicDetail        公示描述
     * @param projectScheduleId   项目进度节点ID
     * @param publicType          公示分类
     * @param publicMemberListStr 公示对象 [ { "creditorId":"1"}, {"creditorId":"2" } ]
     * @param fileListStr         附件 [{"filename":"附件1.jpg","filepath":"上传附件url","filesize":12345}, {"filename":"附件2
     *                            .jpg","filepath":"上传附件url","filesize":12345}]
     */
    @FormUrlEncoded
    @POST("v1/open/api/project/public/updatePublicInfo")
    Observable<JsonObject> editPublic(
            @Field("userToken") String userToken,
            @Field("id") String id,
            @Field("bankruptcyProjectId") String bankruptcyProjectId,
            @Field("publicName") String publicName,
            @Field("publicDetail") String publicDetail,
            @Field("projectScheduleId") String projectScheduleId,
            @Field("publicType") String publicType,
            @Field("publicMemberListStr") String publicMemberListStr,
            @Field("fileListStr") String fileListStr
    );


    /**
     * 获取节点列表
     *
     * @param userToken 用户token
     * @param projectId 项目Id
     */
    @FormUrlEncoded
    @POST("v1/open/api/project/schedule/getNodeManagerList")
    Observable<JsonObject> getFlowList_Manager(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId
    );

    @FormUrlEncoded
    @POST("v1/open/api/project/schedule/getNodeCrList")
    Observable<JsonObject> getNodeCrList(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId
    );


    @FormUrlEncoded
    @POST("v1/open/api/project/getToPage")
    Observable<JsonObject> getToPage(
            @Field("userToken") String userToken,
            @Field("id") String id,
            @Field("type") int type
    );


    /**
     * 获取节点列表
     *
     * @param userToken 用户token
     * @param nodeId    节点Id
     */
    @FormUrlEncoded
    @POST("v1/open/api/project/schedule/getNode")
    Observable<JsonObject> getFlowDetail(
            @Field("userToken") String userToken,
            @Field("nodeId") String nodeId
    );


    /**
     * 删除节点
     *
     * @param userToken 用户token
     * @param nodeId    节点Id
     */
    @FormUrlEncoded
    @POST("v1/open/api/project/schedule/delNode")
    Observable<JsonObject> deleteFlow(
            @Field("userToken") String userToken,
            @Field("nodeId") String nodeId
    );


    /**
     * 发布节点
     *
     * @param userToken           用户token
     * @param bankruptcyProjectId 项目Id
     * @param nodeName            节点名称
     * @param nodeNote            节点说明
     * @param startTimeStr        开始时间
     * @param endTimeStr          截止时间
     * @param modelCode           模板编码，新建节点时，直接传空字符串
     * @param timeType            时间类型 0：时间点， 1：时间段
     * @param sysAddressId        用户地址id
     * @param staging             是否暂存
     * @param countdown           是否显示倒计时
     * @param fileListStr         附件
     */
    @FormUrlEncoded
    @POST("v1/open/api/project/schedule/addNode")
    Observable<JsonObject> createFlow(
            @Field("userToken") String userToken,
            @Field("bankruptcyProjectId") String bankruptcyProjectId,
            @Field("nodeName") String nodeName,
            @Field("nodeNote") String nodeNote,
            @Field("startTimeStr") String startTimeStr,
            @Field("endTimeStr") String endTimeStr,
            @Field("modelCode") String modelCode,
            @Field("timeType") String timeType,
            @Field("sysAddressId") String sysAddressId,
            @Field("staging") boolean staging,
            @Field("countdown") boolean countdown,
            @Field("fileListStr") String fileListStr
    );

    /**
     * 编辑节点
     *
     * @param userToken           用户token
     * @param id                  项目Id
     * @param bankruptcyProjectId 节点id
     * @param nodeName            节点名称
     * @param nodeNote            节点说明
     * @param startTimeStr        开始时间
     * @param endTimeStr          截止时间
     * @param modelCode           模板编码，新建节点时，直接传空字符串
     * @param timeType            时间类型 0：时间点， 1：时间段
     * @param sysAddressId        用户地址id
     * @param staging             是否暂存
     * @param countdown           是否显示倒计时
     * @param fileListStr         附件
     */
    @FormUrlEncoded
    @POST("v1/open/api/project/schedule/updateNode")
    Observable<JsonObject> editFlow(
            @Field("userToken") String userToken,
            @Field("id") String id,
            @Field("bankruptcyProjectId") String bankruptcyProjectId,
            @Field("nodeName") String nodeName,
            @Field("nodeNote") String nodeNote,
            @Field("startTimeStr") String startTimeStr,
            @Field("endTimeStr") String endTimeStr,
            @Field("modelCode") String modelCode,
            @Field("timeType") String timeType,
            @Field("sysAddressId") String sysAddressId,
            @Field("staging") boolean staging,
            @Field("countdown") boolean countdown,
            @Field("fileListStr") String fileListStr
    );


    /**
     * 录入债权人信息
     *
     * @param userToken                      用户token
     * @param projectId                      项目Id
     * @param creditorId                     债权人id
     * @param identityBigTypes               债权人身份-大类,0:机构债权人,1:自然债权人,2:税务机关
     * @param identitySmallTypes             债权人身份-小类,0:法定代表人, 1:代理人 2:本人
     * @param creditorName                   债权人姓名
     * @param provideBusinessLicense         营业执照提供方式，0:线上,1:线下
     * @param socialUniformCreditCode        社会信用代码证
     * @param legalRepresentativeName        法定代表人姓名
     * @param otherContact                   其他联系方式
     * @param email                          邮箱
     * @param provideCard                    身份证提供方式，0:线上,1:线下
     * @param cardNumber                     身份证号码
     * @param provideLegalRepresentative     法定代表人身份证明提供方式
     * @param sysAddressId                   邮寄地址
     * @param agentName                      代理人姓名
     * @param creditorsProvideCard           代理人身份证提交方式，0:线上,1:线下
     * @param providePowerAttorney           授权委托书提供方式，0:线上,1:线下
     * @param agentLicenseNumber             代理人执业证号
     * @param creditorsIDCardNumber          代理人身份证号
     * @param provideBusinessLicenseJson     营业执照附件
     * @param provideLegalRepresentativeJson 法定代表人身份证明附件
     * @param provideCardJson                身份证附件
     * @param providePowerAttorneyJson       授权委托书附件
     * @param creditorsProvideCardJson       代理人身份证/执业证文件
     * @param bank                           开户银行
     * @param bankBranch                     开户银行网点
     * @param bankAccountName                开户账户名称
     * @param bankAccount                    开户账号
     * @param opType                         操作类型,0:发送验证, 1:暂存
     * @param type                           操作人类型,0:管理人操作; 1:债权人操作
     */
    @FormUrlEncoded
    @POST("v1/open/api/creditor/submitInfo")
    Observable<JsonObject> createCreditorInfo(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorId") String creditorId,
            @Field("identityBigTypes") int identityBigTypes,
            @Field("identitySmallTypes") String identitySmallTypes,
            @Field("creditorName") String creditorName,
            @Field("provideBusinessLicense") int provideBusinessLicense,
            @Field("socialUniformCreditCode") String socialUniformCreditCode,
            @Field("legalRepresentativeName") String legalRepresentativeName,
            @Field("otherContact") String otherContact,
            @Field("email") String email,
            @Field("provideCard") int provideCard,
            @Field("cardNumber") String cardNumber,
            @Field("provideLegalRepresentative") int provideLegalRepresentative,
            @Field("sysAddressId") String sysAddressId,
            @Field("agentName") String agentName,
            @Field("creditorsProvideCard") int creditorsProvideCard,
            @Field("providePowerAttorney") int providePowerAttorney,
            @Field("agentLicenseNumber") String agentLicenseNumber,
            @Field("creditorsIDCardNumber") String creditorsIDCardNumber,
            @Field("provideBusinessLicenseJson") String provideBusinessLicenseJson,
            @Field("provideLegalRepresentativeJson") String provideLegalRepresentativeJson,
            @Field("provideCardJson") String provideCardJson,
            @Field("providePowerAttorneyJson") String providePowerAttorneyJson,
            @Field("creditorsProvideCardJson") String creditorsProvideCardJson,
            @Field("bank") String bank,
            @Field("bankBranch") String bankBranch,
            @Field("bankAccountName") String bankAccountName,
            @Field("bankAccount") String bankAccount,
            @Field("opType") int opType,
            @Field("type") int type,
            @Field("cardFileJson") String cardFileJson,
            @Field("provideCardInt") String provideCardInt


    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/modifyCreditor")
    Observable<JsonObject> modifyCreditor(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorId") String creditorId,
            @Field("identityBigTypes") int identityBigTypes,
            @Field("identitySmallTypes") String identitySmallTypes,
            @Field("creditorName") String creditorName,
            @Field("provideBusinessLicense") int provideBusinessLicense,
            @Field("socialUniformCreditCode") String socialUniformCreditCode,
            @Field("legalRepresentativeName") String legalRepresentativeName,
            @Field("otherContact") String otherContact,
            @Field("email") String email,
            @Field("provideCard") int provideCard,
            @Field("cardNumber") String cardNumber,
            @Field("provideLegalRepresentative") int provideLegalRepresentative,
            @Field("sysAddressId") String sysAddressId,
            @Field("agentName") String agentName,
            @Field("creditorsProvideCard") int creditorsProvideCard,
            @Field("providePowerAttorney") int providePowerAttorney,
            @Field("agentLicenseNumber") String agentLicenseNumber,
            @Field("creditorsIDCardNumber") String creditorsIDCardNumber,
            @Field("provideBusinessLicenseJson") String provideBusinessLicenseJson,
            @Field("provideLegalRepresentativeJson") String provideLegalRepresentativeJson,
            @Field("provideCardJson") String provideCardJson,
            @Field("providePowerAttorneyJson") String providePowerAttorneyJson,
            @Field("creditorsProvideCardJson") String creditorsProvideCardJson,
            @Field("bank") String bank,
            @Field("bankBranch") String bankBranch,
            @Field("bankAccountName") String bankAccountName,
            @Field("bankAccount") String bankAccount,
            @Field("opType") int opType,
            @Field("type") int type,
            @Field("cardFileJson") String cardFileJson,
            @Field("provideCardInt") String provideCardInt,
            @Field("changeProveJson") String changeProveJson,
            @Field("otherFilesJson") String otherFilesJson,
            @Field("changeDetail") String changeDetail,
            @Field("contact") String contact
    );


    @FormUrlEncoded
    @POST("v1/open/api/creditor/modifyCreditor")
    Observable<JsonObject> modifyCreditor_sw(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorId") String creditorId,
            @Field("identityBigTypes") int identityBigTypes,
            @Field("creditorName") String creditorName,
            @Field("provideBusinessLicense") int provideBusinessLicense,
            @Field("socialUniformCreditCode") String socialUniformCreditCode,
            @Field("legalRepresentativeName") String legalRepresentativeName,
            @Field("otherContact") String otherContact,
            @Field("email") String email,
            @Field("provideCard") int provideCard,
            @Field("cardNumber") String cardNumber,
            @Field("provideLegalRepresentative") int provideLegalRepresentative,
            @Field("sysAddressId") String sysAddressId,
            @Field("agentName") String agentName,
            @Field("creditorsProvideCard") int creditorsProvideCard,
            @Field("providePowerAttorney") int providePowerAttorney,
            @Field("agentLicenseNumber") String agentLicenseNumber,
            @Field("creditorsIDCardNumber") String creditorsIDCardNumber,
            @Field("provideBusinessLicenseJson") String provideBusinessLicenseJson,
            @Field("provideLegalRepresentativeJson") String provideLegalRepresentativeJson,
            @Field("provideCardJson") String provideCardJson,
            @Field("providePowerAttorneyJson") String providePowerAttorneyJson,
            @Field("creditorsProvideCardJson") String creditorsProvideCardJson,
            @Field("bank") String bank,
            @Field("bankBranch") String bankBranch,
            @Field("bankAccountName") String bankAccountName,
            @Field("bankAccount") String bankAccount,
            @Field("opType") int opType,
            @Field("type") int type,
            @Field("cardFileJson") String cardFileJson,
            @Field("provideCardInt") String provideCardInt,
            @Field("changeProveJson") String changeProveJson,
            @Field("otherFilesJson") String otherFilesJson,
            @Field("changeDetail") String changeDetail,
            @Field("contact") String contact
    );




    /**
     * 新建表决
     *
     * @param userToken        用户token
     * @param projectId        项目id
     * @param voteId*          app临时生成id
     * @param title            标题
     * @param content          内容
     * @param type             表决类型 1-债权人会议表决,2-债权人委员会表决
     * @param rule             表决规则类型 0-破产清算,1-破产和解,2-重整分组（分组）,3-债权人委员会表决,4-其他
     * @param ruleName         表决规则名称
     * @param defaultAgreed    参会未表决默认同意
     * @param ruleExplain      表决规则说明
     * @param startTime        表决开始时间 yyyy-MM-dd HH:mm
     * @param endTime          表决结束时间
     *                         //     * @param members          参会人员
     * @param files            附件 [{"filename":"附件1.jpg","filepath":"上传附件url","filesize":12345}]
     * @param timeMode         通知时间方式 1-指定时间,2-待定
     * @param notificationTime 通知时间(如果timeMode==1则必填)
     * @param courtHolding     表决结果是否需要法院裁定
     * @param presetTime       参会时间预设
     *                         //     * @param groups           分组成员	 如果表决规则为2，生成此项数据
     * @param sysRuleId        系统表决规则id
     * @param moneyPercent     同意金额占比
     * @param personnelPercent 同意人数占比
     * @param noticeSms        通知方式-短信
     * @param noticeOfflineSms 通知方式-线下短信
     * @param noticeMessage    通知方式-站内信
     *                         //     * @param genMeetingNo     是否有生成参会编号
     * @param committeeVisible 仅债委会成员可见
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/add")
    Observable<JsonObject> createVote_Manager(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("voteId") String voteId,
            @Field("title") String title,
            @Field("content") String content,
            @Field("type") int type,
            @Field("rule") int rule,
            @Field("ruleName") String ruleName,
            @Field("defaultAgreed") boolean defaultAgreed,
            @Field("ruleExplain") String ruleExplain,
            @Field("startTime") String startTime,
            @Field("endTime") String endTime,
//            @Field("members") String members,
            @Field("files") String files,
            @Field("timeMode") int timeMode,
            @Field("notificationTime") String notificationTime,
            @Field("courtHolding") boolean courtHolding,
            @Field("presetTime") int presetTime,
//            @Field("groups") String groups,
            @Field("sysRuleId") String sysRuleId,
            @Field("moneyPercent") double moneyPercent,
            @Field("personnelPercent") double personnelPercent,
            @Field("noticeSms") boolean noticeSms,
            @Field("noticeOfflineSms") boolean noticeOfflineSms,
            @Field("noticeMessage") boolean noticeMessage,
//            @Field("genMeetingNo") boolean genMeetingNo,
            @Field("committeeVisible") boolean committeeVisible
    );


    /**
     * 编辑表决
     *
     * @param userToken        用户token
     * @param id               表决id
     * @param title            标题
     * @param content          内容
     * @param type             表决类型 1-债权人会议表决,2-债权人委员会表决
     * @param rule             表决规则类型 0-破产清算,1-破产和解,2-重整分组（分组）,3-债权人委员会表决,4-其他
     * @param ruleName         表决规则名称
     * @param defaultAgreed    参会未表决默认同意
     * @param ruleExplain      表决规则说明
     * @param startTime        表决开始时间 yyyy-MM-dd HH:mm
     * @param endTime          表决结束时间
     * @param files            附件 [{"filename":"附件1.jpg","filepath":"上传附件url","filesize":12345}]
     * @param timeMode         通知时间方式 1-指定时间,2-待定
     * @param notificationTime 通知时间(如果timeMode==1则必填)
     * @param courtHolding     表决结果是否需要法院裁定
     * @param presetTime       参会时间预设
     * @param noticeSms        通知方式-短信
     * @param noticeOfflineSms 通知方式-线下短信
     * @param noticeMessage    通知方式-站内信
     * @param genMeetingNo     是否有生成参会编号
     *                         <p>
     *                         <p>
     *                         通知时间	notificationTime	string	否	如果timeMode==1则必填
     *                         表决结果是否需要法院裁定	courtHolding	Boolean	否
     *                         参会时间预设	presetTime	int	否
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/doEdit")
    Observable<JsonObject> editVote_Manager(
            @Field("userToken") String userToken,
            @Field("id") String id,
            @Field("title") String title,
            @Field("content") String content,
            @Field("ruleName") String ruleName,
            @Field("defaultAgreed") boolean defaultAgreed,
            @Field("ruleExplain") String ruleExplain,
            @Field("startTime") String startTime,
            @Field("endTime") String endTime,
            @Field("files") String files,
            @Field("timeMode") int timeMode,
            @Field("notificationTime") String notificationTime,
            @Field("courtHolding") boolean courtHolding,
            @Field("presetTime") int presetTime,
            @Field("noticeSms") boolean noticeSms,
            @Field("noticeOfflineSms") boolean noticeOfflineSms,
            @Field("noticeMessage") boolean noticeMessage,
            @Field("genMeetingNo") boolean genMeetingNo
    );

    /**
     * 获取表决规则
     *
     * @param userToken 用户token
     * @param projectId 项目id
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/sys/rule")
    Observable<JsonObject> getVoteRuleList(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId
    );

    /**
     * 添加表决规则
     *
     * @param userToken        用户token
     * @param projectId        项目id
     * @param name             规则名
     * @param explains         规则说明
     * @param moneyPercent     金额占比
     * @param personnelPercent 人数占比
     * @param type             类型 0-破产清算，1-破产和解，2-重整分组（分组），3-债权人委员会表决，4-其他
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/add/rule")
    Observable<JsonObject> addVoteRule(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("name") String name,
            @Field("explains") String explains,
            @Field("moneyPercent") double moneyPercent,
            @Field("personnelPercent") double personnelPercent,
            @Field("type") int type
    );






    /**
     * 获取表决详情
     *
     * @param userToken 用户token
     * @param voteId    项目Id
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/detail")
    Observable<JsonObject> getVoteDetail(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );

    /**
     * 获取表决结果数据统计-管理人员
     *
     * @param userToken 用户token
     * @param voteId    表决id
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/result/statistics")
    Observable<JsonObject> getVoteStatisticsOverview_Manager(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );

    /**
     * 获取表决结果数据统计-管理人员
     *
     * @param userToken 用户token
     * @param voteId    表决id
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/result/members")
    Observable<JsonObject> getResultMembers(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("projectId") String projectId,
            @Field("type") int type
    );

    /**
     * 表决结果文件设置-表决结果详细
     *
     * @param userToken 用户token
     * @param voteId    表决id
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/result/status")
    Observable<JsonObject> getVoteResulttatus_Manager(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );


    /**
     * 获取表决进度-管理人员
     *
     * @param userToken 用户token
     * @param voteId    表决id
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/schedule")
    Observable<JsonObject> getVoteSchedule_Manager(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );


    /**
     * 撤销表决
     *
     * @param userToken 用户token
     * @param voteId    表决id
     * @param note      撤销说明
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/cancel")
    Observable<JsonObject> cancelVote_Manager(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("note") String note

    );

    /**
     * 删除表决
     *
     * @param userToken 用户token
     * @param voteId    项目Id
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/delete")
    Observable<JsonObject> deleteVote_Manager(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );


    /**
     * 发送通知
     *
     * @param userToken 用户token
     * @param voteId    项目Id
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/notice")
    Observable<JsonObject> sendVoteNotice_Manager(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );


    /**
     * 获取表决列表-管理人员
     *
     * @param userToken  用户token
     * @param projectId  项目Id
     * @param pageNumber 页码
     * @param pageSize   每页条数
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/data")
    Observable<JsonObject> getVoteList_Manager(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("pageNumber") int pageNumber,
            @Field("pageSize") int pageSize
    );

    /**
     * 获取表决人详情-管理人员
     *
     * @param userToken  用户token
     * @param voteId     表决Id
     * @param status     状态：1-已表决 2-已参会未表决 3-未参会
     * @param pageNumber 页码
     * @param pageSize   每页条数
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/group/participants")
    Observable<JsonObject> getVotesGroup_Manager(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("status") int status,
            @Field("defaultAgreed") Boolean defaultAgreed,
            @Field("pageNumber") int pageNumber,
            @Field("pageSize") int pageSize
    );

    /**
     * 获取表决人详情-管理人员
     *
     * @param userToken  用户token
     * @param voteId     表决Id
     * @param projectId  项目id
     * @param groupId    分组id
     * @param status     状态：1-已表决 2-已参会未表决 3-未参会
     * @param pageNumber 页码
     * @param pageSize   每页条数
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/participants")
    Observable<JsonObject> getVotesDetail_Manager(
            @FieldMap Map<String, String> params
//            @Field("userToken") String userToken,
//            @Field("voteId") String voteId,
//            @Field("projectId") String projectId,
//            @Field("groupId") String groupId,
//            @Field("status") int status,
//            @Field("defaultAgreed") Boolean defaultAgreed,
//            @Field("pageNumber") int pageNumber,
//            @Field("pageSize") int pageSize
    );

    /**
     * 开放表决意见修改-管理人员
     *
     * @param userToken   用户token
     * @param pid         表决人记录id
     * @param allowChange 表决意见  0-返回 1-同意
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/change/allowChange")
    Observable<JsonObject> voteAllowChange_Manager(
            @Field("userToken") String userToken,
            @Field("pid") String pid,
            @Field("allowChange") int allowChange
    );

    /**
     * 修改表决人意见-管理人员
     *
     * @param userToken 用户token
     * @param pid       表决人记录id
     * @param opinion   是否允许  0-关闭  1-开启
     * @param note      备注说明
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/change/opinion")
    Observable<JsonObject> changeOponion_Manager(
            @Field("userToken") String userToken,
            @Field("pid") String pid,
            @Field("opinion") int opinion,
            @Field("note") String note
    );

    /**
     * 修改参会状态-管理人员
     *
     * @param userToken 用户token
     * @param pid       表决人记录id
     * @param voteId    表决id
     * @param meeting   0-退出 1-参会
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/change/meeting")
    Observable<JsonObject> changeMeeting_Manager(
            @Field("userToken") String userToken,
            @Field("pid") String pid,
            @Field("voteId") String voteId,
            @Field("meeting") int meeting
    );


    /**
     * 生成表决结果-管理人员
     *
     * @param userToken     用户token
     * @param voteId        表决id
     * @param voteName      表决名称
     * @param voteType      表决类型
     * @param voteContent   表决内容
     * @param voteRule      表决规则
     * @param voteRuleExpls 表决规则说明
     * @param voteTime      表决时间
     * @param voteDataSta   数据统计
     * @param voteResult    表决通过
     * @param voteMember    true-表决人员 false 表决明细
     * @param notice        结果说明
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/generate/result")
    Observable<JsonObject> createVoteResult_Manager(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("voteName") boolean voteName,
            @Field("voteType") boolean voteType,
            @Field("voteContent") boolean voteContent,
            @Field("voteRule") boolean voteRule,
            @Field("voteRuleExpls") boolean voteRuleExpls,
            @Field("voteTime") boolean voteTime,
            @Field("voteDataSta") boolean voteDataSta,
            @Field("voteResult") boolean voteResult,
            @Field("voteMember") String voteMember,
            @Field("notice") String notice
    );

    /**
     * 重新生成表决结果-管理人员
     *
     * @param userToken 用户token
     * @param voteId    表决id
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/view/result")
    Observable<JsonObject> getVoteResult_Manager(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId

    );


    /**
     * 重新生成表决结果-管理人员
     *
     * @param userToken 用户token
     * @param voteId    表决id
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/regenerate/result")
    Observable<JsonObject> reCreateVoteResult_Manager(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("voteName") boolean voteName,
            @Field("voteType") boolean voteType,
            @Field("voteContent") boolean voteContent,
            @Field("voteRule") boolean voteRule,
            @Field("voteRuleExpls") boolean voteRuleExpls,
            @Field("voteTime") boolean voteTime,
            @Field("voteDataSta") boolean voteDataSta,
            @Field("voteResult") boolean voteResult,
            @Field("voteMember") String voteMember,
            @Field("notice") String notice,
            @Field("resultId") String resultId

    );

    @FormUrlEncoded
    @POST("v1/open/api/user/logout")
    Observable<JsonObject> logout(
            @Field("userToken") String userToken

    );

    /**
     * 发布表决结果-管理人员
     *
     * @param userToken 用户token
     * @param voteId    表决id
     * @param projectId 项目id
     * @param resultId  表决类型
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/publish/result")
    Observable<JsonObject> publishVoteResult_Manager(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("projectId") String projectId,
            @Field("resultId") String resultId
    );

    /**
     * 发布表决结果-管理人员
     *
     * @param userToken 用户token
     * @param voteId    表决id
     * @param projectId 项目id
     * @param files     裁定文件
     * @param judge     裁定结果  1-裁定认可  2-裁定不认可  3-裁定通过
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/court/result")
    Observable<JsonObject> uploadCourtFile_Manager(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("projectId") String projectId,
            @Field("files") String files,
            @Field("judge") int judge
    );


    /**
     * 获取表决列表-债权人
     *
     * @param userToken  用户token
     * @param projectId  项目Id
     * @param pageNumber 页码
     * @param pageSize   每页条数
     */
    @FormUrlEncoded
    @POST("v1/open/api/creditor/vote/data")
    Observable<JsonObject> getVoteList_Creditor(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("pageNumber") int pageNumber,
            @Field("pageSize") int pageSize
    );


    /**
     * 保存地址
     * <p>
     * 用户token	userToken
     * 省份	province
     * 城市	city
     * 区域	region
     * 详细地址	address
     * 邮政编码	zipCode
     * 是否默认	defaut
     */
    @FormUrlEncoded
    @POST("v1/open/api/address/saveAddress")
    Observable<JsonObject> saveAddress(
            @Field("userToken") String userToken,
            @Field("province") String province,
            @Field("city") String city,
            @Field("region") String region,
            @Field("address") String address,
            @Field("zipCode") String zipCode,
            @Field("defaut") boolean defaut
    );


    @FormUrlEncoded
    @POST("/v1/open/api/user/setDefaultAddress")
    Observable<JsonObject> setDefaultAddress(
            @Field("userToken") String userToken,
            @Field("addressId") String id

    );

    @FormUrlEncoded
    @POST("/v1/open/api/user/info")
    Observable<JsonObject> getUserInfo(
            @Field("userToken") String userToken

    );



    @FormUrlEncoded
    @POST("/v1/open/api/creditor/countNeedVerify")
    Observable<JsonObject> getCreditorCountNeedVerify(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId
    );


    @FormUrlEncoded
    @POST("/v1/open/api/creditor/operationLog")
    Observable<JsonObject> operationLog(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("pageNumber") String pageNumber,
            @Field("pageSize") String pageSize,
            @Field("creditorId") String creditorId
    );

    /**
     * @param userToken
     * @param id
     * @param province
     * @param city
     * @param region
     * @param address
     * @param zipCode
     * @param defaut
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/address/updateAddress")
    Observable<JsonObject> updateAddress(
            @Field("userToken") String userToken,
            @Field("id") String id,
            @Field("province") String province,
            @Field("city") String city,
            @Field("region") String region,
            @Field("address") String address,
            @Field("zipCode") String zipCode,
            @Field("defaut") boolean defaut
    );

    /**
     * @param userToken
     * @param sysAddressId
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/address/delAddress")
    Observable<JsonObject> delAddress(
            @Field("userToken") String userToken,
            @Field("sysAddressId") String sysAddressId
    );

    /**
     * 用户token	userToken	String	是
     * 项目id	projectId	String	是
     * 是否是债委会成员	committee	Boolean	否
     * 线上or线下	onlineStatus	Boolean	否	线上线下状态
     * 债权种类-税务	kindTax	Boolean	否
     * 筛选条件应只出现3项
     * 债权种类-担保优先	kindGuarantee	Boolean	否
     * 债权种类-其他优先	kindOther	Boolean	否
     * 债权种类-普通	kindOrdinary	Boolean	否	如果是添加分组勾选普通类型，则包含税务，查询时同时传递 kindTax=true , kindOrdinary=true
     * 最小申报金额	minAmountDeclared	double	否	查询区间下限
     * 最大申报金额	maxAmountDeclared	double	否	查询区间上限
     * 最小确认金额	minConfirmAmount	double	否
     * 最大确认金额	maxConfirmAmount	double	否
     * 进程状态	processStatus	string	否	0:未通知,1:已通知,2:已接收邀请,3:已拒绝,4:身份待验证,5:暂未申报,6:未审查,7:已确定,8:未有确认债权
     * 排序	orderBy	string	否	asc升序desc降序（默认desc）
     * 排序字段	orderColumn	string	否	declareTime 申报时间 confirmTime 确认时间 amountDeclared 申报金额 confirmAmount 确认金额
     * 页码	pageNo	Int	是
     * 每页数量	pageSize	Int	是
     *
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/creditorListCnd")
    Observable<JsonObject> creditorListCnd(
            @FieldMap Map<String, String> params
    );



    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/creditor/data")
    Observable<JsonObject> getCreditorList(
            @FieldMap Map<String, String> params
    );

//    @FormUrlEncoded
//    @POST("v1/open/api/manager/vote/tmp/add/member")
//    Observable<JsonObject> tmpAddMembervote/creditor/data(
//            @FieldMap Map<String, String> params
//    );



    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/creditorListCnd")
    Observable<JsonObject> getCreditorListNew(
            @FieldMap Map<String, String> params
    );

    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/creditorListStat")
    Observable<JsonObject> creditorListStat(
            @FieldMap Map<String, String> params
    );

    //    @FormUrlEncoded
    //    @POST("open/api/manager/creditor/rights/creditorListCnd")
    //    Observable<JsonObject> creditorListCnd(
    //            @Field("userToken") String userToken,
    //            @Field("projectId") String projectId,
    //            @Field("committee") boolean committee,
    //            @Field("onlineStatus") boolean onlineStatus,
    //            @Field("kindTax") boolean kindTax,
    //            @Field("kindGuarantee") boolean kindGuarantee,
    //            @Field("kindOther") boolean kindOther,
    //            @Field("kindOrdinary") boolean kindOrdinary,
    //            @Field("minAmountDeclared") double minAmountDeclared,
    //            @Field("maxAmountDeclared") double maxAmountDeclared,
    //            @Field("minConfirmAmount") double minConfirmAmount,
    //            @Field("maxConfirmAmount") double maxConfirmAmount,
    //            @Field("processStatus") String processStatus,
    //            @Field("orderBy") String orderBy,
    //            @Field("orderColumn") String orderColumn,
    //            @Field("pageNo") int pageNo,
    //            @Field("pageSize") int pageSize
    //    );

    /**
     * 历史群发消息
     *
     * @param userToken
     * @param projectId
     * @param pageNo
     * @param pageSize
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/findGroupMsg")
    Observable<JsonObject> findGroupMsg(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("pageNumber") int pageNo,
            @Field("pageSize") int pageSize
    );

    /**
     * 发送群发消息
     *
     * @param userToken
     * @param projectId
     * @param content
     * @param sysUserIds
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/sendGroupMsg")
    Observable<JsonObject> sendGroupMsg(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("content") String content,
            @Field("sysUserIds") String sysUserIds
    );

    /**
     * 发送留言消息
     *
     * @param userToken
     * @param projectId
     * @param content
     * @param fromUserId
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/creditor/sendLeavingMsg")
    Observable<JsonObject> sendLeavingMsg(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("content") String content,
            @Field("fromUserId") String fromUserId
    );

    /**
     * 获取聊天记录
     *
     * @param userToken
     * @param fromUserId
     * @param sendUserId
     * @param pageNo
     * @param pageSize
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/msg/getChatList")
    Observable<JsonObject> getChatList(
            @Field("userToken") String userToken,
            @Field("fromUserId") String fromUserId,
            @Field("sendUserId") String sendUserId,
            @Field("pageNumber") int pageNo,
            @Field("pageSize") int pageSize
    );

    /**
     * 根据Type获取消息
     *
     * @param userToken
     * @param msgType
     * @param pageNo
     * @param pageSize
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/msg/list")
    Observable<JsonObject> getMsgList(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId, //非必填
            @Field("msgType") int msgType, //1:通知,2:留言,3:论坛
            @Field("pageNumber") int pageNo,
            @Field("pageSize") int pageSize
    );

    /**
     * 已读消息一条
     *
     * @param userToken
     * @param msgId
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/msg/readone")
    Observable<JsonObject> readone(
            @Field("userToken") String userToken,
            @Field("msgId") String msgId
    );

    /**
     * 已读全部
     *
     * @param userToken
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/msg/readoneAll")
    Observable<JsonObject> readoneAll(
            @Field("userToken") String userToken
    );

    /**
     * 删除消息
     *
     * @param userToken
     * @param msgId
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/msg/deleteMsg")
    Observable<JsonObject> deleteMsg(
            @Field("userToken") String userToken,
            @Field("msgId") String msgId
    );

    /** * * * * * * * * * * * * * 表 * 决 * 接 * 口 * * * * * * * * * * * * * *
     * 标记为EDIT的接口表示是文档上标记（编辑）用的
     */

    /**
     * 债权人端-表决人员分组列表
     * 表决人员明细（先查询分组再查询分组内部人员即9.8接口）
     *
     * @param userToken
     * @param voteId
     * @param status     1-已表决 2-已参会未表决 3-未参会
     * @param pageNumber
     * @param pageSize
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/creditor/vote/group/participants")
    Observable<JsonObject> getVoteGroup(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("status") String status,
            @Field("defaultAgreed") Boolean defaultAgreed,
            @Field("pageNumber") int pageNumber,
            @Field("pageSize") int pageSize
    );

    /**
     * 查询分组列表 *EDIT
     *
     * @param userToken
     * @param voteId
     * @param pageNumber
     * @param pageSize
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/groupList")
    Observable<JsonObject> getEditGroupList(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("pageNumber") String pageNumber,
            @Field("pageSize") String pageSize
    );

    /**
     * 查询成员列表
     *
     * 用户token	userToken	String	是
     * 项目id	projectId	string	是
     * 表决id	voteId	string	是
     * 分组id	groupId	string	否	有分组时填写
     * 表决规则	voteRule	Integer	否
     * 页码	pageNumber	int	是
     * 条数	pageSize	int	是
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/participant/data")
    Observable<JsonObject> getShowVoteMember(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("voteId") String voteId,
            @Field("groupId") String groupId,
            @Field("voteRule") String voteRule,
            @Field("pageNumber") String pageNumber,
            @Field("pageSize") String pageSize
    );

    /**
     * 添加表决成员 *EDIT
     *
     * @param userToken
     * @param voteId
     * @param projectId
     * @param groupId
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/add/member")
    Observable<JsonObject> addVoteMember(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("projectId") String projectId,
            @Field("groupId") String groupId,
            @Field("members") String members
    );

    /**
     * 删除表决成员 *EDIT
     *
     * @param userToken
     * @param voteId
     * @param id
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/delete/member")
    Observable<JsonObject> deleteVoteMember(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("tmpId") String id
    );

    /**
     * 清空表决成员
     *
     * @param userToken
     * @param voteId
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/clear/tmp/data")
    Observable<JsonObject> clearVoteMember(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );

    /**
     * 添加表决分组 *EDIT
     *
     * @param userToken
     * @param voteId
     * @param name
     * @param ordinary
     * @param guarantee
     * @param other
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/add/group")
    Observable<JsonObject> addVoteGroup(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("name") String name,
            @Field("ordinary") boolean ordinary,
            @Field("guarantee") boolean guarantee,
            @Field("other") boolean other
    );

    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/update/group")
    Observable<JsonObject> editVoteGroup(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("groupName") String groupName,
            @Field("groupId") String groupId
    );

    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/delete/group")
    Observable<JsonObject> deleteVoteGroup(
            @Field("userToken") String userToken,
            @Field("groupId") String groupId,
            @Field("voteId") String voteId
    );

    /**
     * 修改表决金额 *EDIT
     *
     * @param userToken
     * @param tmpId
     * @param voteMoney
     * @param voteId
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/update/voteMoney")
    Observable<JsonObject> turnVoteMoney(
            @Field("userToken") String userToken,
            @Field("tmpId") String tmpId,
            @Field("voteMoney") double voteMoney,
            @Field("voteId") String voteId,
            @Field("groupId") String groupId
    );

    /**
     * 生成参会编号 *EDIT
     *
     * @param userToken
     * @param voteId
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/edit/meetingNumber")
    Observable<JsonObject> editMeetingNumber(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );

    /**
     * 生成参会编号
     *
     * @return
     */
//    @FormUrlEncoded
//    @POST("v1/open/api/manager/vote/generate/meetingNumber")
//    Observable<JsonObject> getMeetingNumber(
//            @Field("userToken") String userToken,
//            @Field("members") String members
//    );
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/generate/meetingNumber")
    Observable<JsonObject> getMeetingNumber(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("projectId") String projectId,
            @Field("voteRule") String voteRule
    );

    /**
     * 生成参会编号 分组
     *
     * @param userToken
     * @param members
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/group/generate/meetingNumber")
    Observable<JsonObject> getGroupMeetingNumber(
            @Field("userToken") String userToken,
            @Field("members") String members
    );

    /**
     * 生成参会编号（编辑完成）*EDIT
     * 编辑页添加或删除参会人员，如果参会人员已有参会编号，新加入或删除人员没有点击生成参会编号需在点击完成时请求该接口以重新生成所有人员编号
     *
     * @param userToken
     * @param voteId
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/members/complete")
    Observable<JsonObject> editComplete(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("projectId") String projectId,
            @Field("voteRule") String voteRule
    );

    /**
     * 新建或者编辑表决成员表
     *
     * @param userToken
     * @param voteId
     * @param groupId
     * @param projectId
     * @param pageNumber
     * @param pageSize
     * @param voteRule
     * @return
     */
    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/tmp/data")
    Observable<JsonObject> getOrAddVoteMemberTable(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("groupId") String groupId,
            @Field("projectId") String projectId,
            @Field("pageNumber") String pageNumber,
            @Field("pageSize") String pageSize,
            @Field("voteRule") String voteRule
    );

    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/tmp/add/member")
    Observable<JsonObject> addVoteMember(@FieldMap Map<String, String> params);


    @FormUrlEncoded
    @POST("v1/open/api/creditor/editInfo")
    Observable<JsonObject> editInfo(@FieldMap Map<String, String> params);


    /**
     * ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 表 * 决 * 接 * 口 * Start ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
     */
    //债权人端-表决详情
    @FormUrlEncoded
    @POST("v1/open/api/creditor/vote/detail")
    Observable<JsonObject> getVoteDetail_Creditor(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );

    //债权人端-参会
    @FormUrlEncoded
    @POST("v1/open/api/creditor/vote/meeting")
    Observable<JsonObject> getVoteMeeting_Creditor(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );

    //债权人端-退出参会
    @FormUrlEncoded
    @POST("v1/open/api/creditor/vote/exitMeeting")
    Observable<JsonObject> getVoteExitMeeting_Creditor(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );

    //债权人端-表决进度
    @FormUrlEncoded
    @POST("v1/open/api/creditor/vote/schedule")
    Observable<JsonObject> getVoteSchedule_Creditor(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );

    //债权人端-表决进度
    @FormUrlEncoded
    @POST("v1/open/api/creditor/vote/myVote")
    Observable<JsonObject> getVoteMyVote_Creditor(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("creditorId") String creditorId
    );

    //债权人端-获取债权人表决分组
    @FormUrlEncoded
    @POST("v1/open/api/creditor/vote/groupList")
    Observable<JsonObject> getVoteMyGroupList_Creditor(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("creditorId") String creditor
    );

    //债权人端-表决
    @FormUrlEncoded
    @POST("v1/open/api/creditor/vote/vote")
    Observable<JsonObject> getVoteSubmitVote_Creditor(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("groupId") String groupId,
            @Field("voteOpinion") String voteOpinion,
            @Field("supplementOpinion") String supplementOpinion
    );

    /**
     * 债权人端-表决人员明细
     *
     * @param userToken
     * @param voteId
     * @param projectId
     * @param groupId
     * @param status     1-已表决 2-已参会未表决 3-未参会
     * @param pageNumber
     * @param pageSize
     * @return
     */
    //债权人端-表决人员明细
    @FormUrlEncoded
    @POST("v1/open/api/creditor/vote/participants")
    Observable<JsonObject> getVoteParticipants(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId,
            @Field("projectId") String projectId,
            @Field("groupId") String groupId,
            @Field("status") int status,
            @Field("defaultAgreed") Boolean defaultAgreed,
            @Field("pageNumber") int pageNumber,
            @Field("pageSize") int pageSize
    );

    //债权人端-表决人员明细
    @FormUrlEncoded
    @POST("v1/open/api/creditor/vote/view/result")
    Observable<JsonObject> getVoteResultFile(
            @Field("userToken") String userToken,
            @Field("voteId") String voteId
    );

    /**
     * ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 表 * 决 * 接 * 口 * End ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
     */

    @FormUrlEncoded
    @POST("v1/open/api/project/getDetailInfo")
    Observable<JsonObject> getDetailInfo(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId
    );


    @FormUrlEncoded
    @POST("v1/open/api/project/getBaseInfo")
    Observable<JsonObject> getBaseInfo(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId
    );

    @FormUrlEncoded
    @POST("v1/open/api/project/setProjectRights")
    Observable<JsonObject> setProjectRights(
            @Field("userToken") String userToken,
            @Field("id") String projectId,
            @Field("publicStatus") int publicStatus,
            @Field("publicSection") String publicSection,
            @Field("close") boolean close,
            @Field("allowJoin") boolean allowJoin,
            @Field("closeClaimFiling") boolean closeClaimFiling,
            @Field("openDiscussion") boolean openDiscussion,
            @Field("allowCreditorsChangInfo") boolean allowCreditorsChangInfo,
            @Field("displayedInstantly") boolean displayedInstantly,
            @Field("creditorsVisibleDetails") boolean creditorsVisibleDetails,
            @Field("openAdministratorList") boolean openAdministratorList,
            @Field("openAdministratorInfo") boolean openAdministratorInfo,
            @Field("openCreditorsList") boolean openCreditorsList,
            @Field("openCreditorsInfo") boolean openCreditorsInfo,
            @Field("smsScope") int smsScope
    );


    @FormUrlEncoded
    @POST("v1/open/api/project/setProjectRights")
    Observable<JsonObject> setProjectRightsNew(
            @Field("userToken") String userToken,
            @Field("id") String projectId,
            @Field("publicStatus") int publicStatus,
            @Field("publicSection") String publicSection,
            @Field("close") int close,
            @Field("allowJoin") int allowJoin,
            @Field("closeClaimFiling") int closeClaimFiling,
            @Field("openDiscussion") int openDiscussion,
            @Field("allowCreditorsChangInfo") int allowCreditorsChangInfo,
            @Field("displayedInstantly") int displayedInstantly,
            @Field("creditorsVisibleDetails") int creditorsVisibleDetails,
            @Field("openAdministratorList") int openAdministratorList,
            @Field("openAdministratorInfo") int openAdministratorInfo,
            @Field("openCreditorsList") int openCreditorsList,
            @Field("openCreditorsInfo") int openCreditorsInfo,
            @Field("smsScope") String smsScope
    );


    /**
     * 意见反馈
     *
     * @param留言内容
     */
    @FormUrlEncoded
    @POST("/v1/open/api/cms/leavingMsg/add")
    Observable<JsonObject> sendFeedbak(
            @Field("userToken") String userToken,
            @Field("content") String content

    );

    @FormUrlEncoded
    @POST("/v1/open/api/user/smsCaptcha")
    Observable<JsonObject> getSMSCode(
            @Field("mobile") String mobile,
            @Field("source") int source

    );

    @FormUrlEncoded
    @POST("/v1/open/api/user/checkPreCaptcha")
    Observable<JsonObject> getSMSCode2(
            @Field("userToken") String userToken,
            @Field("preNumber") String preumber,
            @Field("preCaptcha") String preCaptcha,
            @Field("newNumber") String newNumber

    );

    @FormUrlEncoded
    @POST("/v1/open/api/user/modifyMobile")
    Observable<JsonObject> getModifyMobile(
            @Field("userToken") String userToken,
            @Field("newNumber") String newNumber,
            @Field("newCaptcha") String newCaptcha

    );

    @FormUrlEncoded
    @POST("/v1/open/api/cms/config/list")
    Observable<JsonObject> getConfigList(
            @Field("gg") String gg

    );




    @FormUrlEncoded
    @POST("/v1/open/api/project/checkCreateProject")
    Observable<JsonObject> checkCreaeProject(
            @Field("userToken") String userToken


    );

    @FormUrlEncoded
    @POST("/v1/open/api/project/checkProjectName")
    Observable<JsonObject> vName(
            @Field("projectName") String projectName


    );

    @FormUrlEncoded
    @POST("/v1/open/api/area/getAllAreaData")
    Observable<JsonObject> getAllAreaData(
            @Field("projectName") String projectName
    );



    @FormUrlEncoded
    @POST("v1/open/api/managers/configurePermission")
    Observable<JsonObject> setPermission(
            @Field("managersTeamId") String managersTeamId,
            @Field("projectRole") int projectRole,
            @Field("groupLeader") boolean groupLeader,
            @Field("projectColumnPermission") String projectColumnPermission,
            @Field("opManagementMembers") boolean opManagementMembers,
            @Field("opOtherMembers") boolean opOtherMembers,
            @Field("contactCreditor") boolean contactCreditor,
            @Field("groupSentMessage") boolean groupSentMessage,
            @Field("sendSMS") boolean sendSMS,
            @Field("userToken") String userToken
    );

    @FormUrlEncoded
    @POST("v1/open/api/other/member/configurePermission")
    Observable<JsonObject> setOtherPermission(
            @Field("otherMemberId") String managersTeamId,
            @Field("projectColumnPermission") String projectColumnPermission,
            @Field("userToken") String userToken
    );

    @FormUrlEncoded
    @POST("v1/open/api/project/getCourtList")
    Observable<JsonObject> getCourtList(
            @Field("courtName") String courtName
    );

    @FormUrlEncoded
    @POST("v1/open/api/managers/hidePhone")
    Observable<JsonObject> MHidePhone(
            @Field("managersTeamId") String managersTeamId,
            @Field("userToken") String userToken
    );

    @FormUrlEncoded
    @POST("v1/open/api/other/member/hidePhone")
    Observable<JsonObject> OHidePhone(
            @Field("otherMemberId") String managersTeamId,
            @Field("userToken") String userToken
    );


    @FormUrlEncoded
    @POST("v1/open/api/managers/detail")
    Observable<JsonObject> getManagerMemberInfo(
            @Field("managersTeamId") String managersTeamId,
            @Field("userToken") String userToken
    );

    @FormUrlEncoded
    @POST("v1/open/api/other/member/detail")
    Observable<JsonObject> getOtherMemberInfo(
            @Field("otherMemberId") String managersTeamId,
            @Field("userToken") String userToken
    );

    @FormUrlEncoded
    @POST("v1/open/api/managers/editMember")
    Observable<JsonObject> editManagerMember(
            @Field("managersTeamId") String managersTeamId,
            @Field("sysUserId") String sysUserId,
            @Field("username") String username,
            @Field("subsidiaryOrgan") String subsidiaryOrgan,
            @Field("email") String email,
            @Field("otherContactNumber") String otherContactNumber,
            @Field("sysAddressId") String sysAddressId,
            //            @Field("province") String province,
            //            @Field("city") String city,
            //            @Field("region") String region,
            //            @Field("address") String address,
            @Field("userToken") String userToken
    );

    @FormUrlEncoded
    @POST("v1/open/api/other/member/editMember")
    Observable<JsonObject> editOtherMember(
            @Field("otherMemberId") String managersTeamId,
            @Field("sysUserId") String sysUserId,
            @Field("loginName") String loginName,
            @Field("username") String username,
            @Field("contributiveMoney") String contributiveMoney,
            @Field("email") String email,
            @Field("otherPhone") String otherPhone,
            @Field("sysAddressId") String sysAddressId,
            //            @Field("province") String province,
            //            @Field("city") String city,
            //            @Field("region") String region,
            //            @Field("address") String address,
            @Field("userToken") String userToken
    );


    @FormUrlEncoded
    @POST("v1/open/api/manager/vote/edit")
    Observable<JsonObject> voteedit(
            @Field("voteId") String voteId,
            @Field("voteRule") String voteRule,
            @Field("userToken") String userToken
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/review/creatImg")
    Observable<JsonObject> creatImg(
            @Field("crReviewId") String crReviewId,
            @Field("projectId") String projectId,
            @Field("userToken") String userToken
    );

    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/review/creatImg")
    Observable<JsonObject> creatImg_m(
            @Field("crReviewId") String crReviewId,
            @Field("projectId") String projectId,
            @Field("userToken") String userToken
    );






    @FormUrlEncoded
    @POST("v1/open/api/project/focus/saveProjectFocus")
    Observable<JsonObject> saveProjectFocus(
            @Field("projectId") String projectId,
            @Field("userToken") String userToken
    );

    @FormUrlEncoded
    @POST("v1/open/api/project/focus/delProjectFocus")
    Observable<JsonObject> delProjectFocus(
            @Field("focusId") String focusId,
            @Field("userToken") String userToken
    );

    @FormUrlEncoded
    @POST("v1/open/api/project/focus/checkFocus")
    Observable<JsonObject> checkFocus(
            @Field("projectId") String projectId,
            @Field("userToken") String userToken
    );


    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/declaration/detail")
    Observable<JsonObject> getDeclarationDetail(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorId") String creditorId

    );

    @FormUrlEncoded
    @POST("v1/open/api/managers/editGroup")
    Observable<JsonObject> editGroup(
            @Field("userToken") String userToken,
            @Field("groupId") String groupId,
            @Field("groupName") String groupName
    );

    @FormUrlEncoded
    @POST("v1/open/api/project/myRelationProject")
    Observable<JsonObject> relationProject(
            @Field("userToken") String userToken,
            @Field("sysUserId") String sysUserId
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/convertOnlineStatus")
    Observable<JsonObject> convertOnlineStatus(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorId") String creditorId,
            @Field("status") int status
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/info")
    Observable<JsonObject> creditorInfo(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorId") String creditorId,
            @Field("type") int type
    );

    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/generateVirtualAccount")
    Observable<JsonObject> generateVirtualAccount(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorId") String creditorId
    );



    @FormUrlEncoded
    @POST("v1/open/api/creditor/addCreditorAgent")
    Observable<JsonObject> addCreditorAgent(
            @Field("userToken") String userToken,
            @Field("creditorId") String creditorId,
            @Field("projectId") String projectId,

            @Field("agentName") String agentName,
            @Field("contact") String contact,
            @Field("otherContact") String otherContact,
            @Field("email") String email,
            @Field("creditorsIDCardNumber") String creditorsIDCardNumber,
            @Field("creditorsProvideCard") int creditorsProvideCard,
            @Field("creditorsProvideCardJsonArray") String creditorsProvideCardJsonArray,
            @Field("providePowerAttorney") int providePowerAttorney,
            @Field("providePowerAttorneyJsonArray") String providePowerAttorneyJsonArray,
            @Field("sysAddressId") String sysAddressId,
            @Field("type") int type
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/editCreditorAgent")
    Observable<JsonObject> editCreditorAgent(
            @Field("userToken") String userToken,
            @Field("creditorId") String creditorId,
            @Field("projectId") String projectId,

            @Field("agentName") String agentName,
            @Field("contact") String contact,
            @Field("otherContact") String otherContact,
            @Field("email") String email,
            @Field("creditorsIDCardNumber") String creditorsIDCardNumber,
            @Field("creditorsProvideCard") int creditorsProvideCard,
            @Field("creditorsProvideCardJsonArray") String creditorsProvideCardJsonArray,
            @Field("providePowerAttorney") int providePowerAttorney,
            @Field("providePowerAttorneyJsonArray") String providePowerAttorneyJsonArray,
            @Field("sysAddressId") String sysAddressId,
            @Field("type") int type
    );




    //搜索审查信息
    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/declaration/search")
    Observable<JsonObject> searchDeclarationData(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorName") String creditorName,
            @Field("pageNo") int pageNo,
            @Field("pageSize") int pageSize
    );

    //搜索审查信息
    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/declaration/detail")
    Observable<JsonObject> gethDeclarationDetail(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorRightsId") String creditorRightsId
    );

    //搜索审查信息
    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/declaration/detail")
    Observable<JsonObject> gethDeclarationDetail2(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorId") String creditorId
    );

    //填写审查意见页面
    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/declaration/review")
    Observable<JsonObject> sendDeclarationReviewData(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorRightsId") String creditorRightsId,
            @Field("confirmedMoney") double confirmedMoney,
            @Field("ordinaryMoney") double ordinaryMoney,
            @Field("guaranteePriority") double guaranteePriority,
            @Field("otherPriorityMoney") double otherPriorityMoney,
            @Field("disconfirmationMoney") double disconfirmationMoney,
            @Field("undeterminedMoney") double undeterminedMoney,
            @Field("regularTaxMoney") double regularTaxMoney,
            @Field("overdueFineMoney") double overdueFineMoney,
            @Field("otherMoney") double otherMoney,
            @Field("reviewResults") String reviewResults,
            @Field("supplementaryMaterial") String supplementaryMaterial,
            @Field("specialNote") String specialNote,
            @Field("statusInt") int statusInt,
            @Field("crReviewId") String crReviewId
    );


    //未发送审查意见 页面（管理人）：
    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/review/detail")
    Observable<JsonObject> getExamineReviewDetail_g(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("crReviewId") String crReviewId,
            @Field("creditorRightsId") String creditorRightsId
    );

    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/review/detail")
    Observable<JsonObject> getExamineReviewDetail_g2(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorRightsId") String crReviewId
    );



    //未发送审查意见 页面（债权人）：
    @FormUrlEncoded
    @POST("v1/open/api/creditor/reviewDeatil")
    Observable<JsonObject> getExamineReviewDetail_z1(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("crReviewId") String crReviewId,
            @Field("creditorRightsId") String creditorRightsId
    );

    //未发送审查意见 页面（债权人）：
    @FormUrlEncoded
    @POST("v1/open/api/creditor/reviewDeatil")
    Observable<JsonObject> getExamineReviewDetail_z2(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorRightsId") String crReviewId
    );


    //管理人端发送债权审查意见
    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/review/sendNotice")
    Observable<JsonObject> sendExamineReviewNotice(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("crReviewId") String crReviewId);

    //设置债权人委员/设为债权人委员主席 1: 设为债委会成员 2:卸任债委会成员,3:设为债权人委员主席
    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/settingCommittee")
    Observable<JsonObject> settingCommittee(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorId") String creditorId,
            @Field("type") int type);


    //再次发送通知
    @FormUrlEncoded
    @POST("v1/open/api/creditor/sendInvitationDeclareNotice")
    Observable<JsonObject> sendInvitationDeclareNotice(
            @Field("userToken") String userToken,
            @Field("notifyTypes") String notifyTypes,
            @Field("creditorId") String creditorId);


    //manager/creditor/rights/reReviewDo
    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/reReviewDo")
    Observable<JsonObject> sendDeclarationReReviewData(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("crReviewId") String crReviewId,
            @Field("creditorRightsId") String creditorRightsId,
            @Field("confirmedMoney") double confirmedMoney,
            @Field("ordinaryMoney") double ordinaryMoney,
            @Field("guaranteePriority") double guaranteePriority,
            @Field("otherPriorityMoney") double otherPriorityMoney,
            @Field("disconfirmationMoney") double disconfirmationMoney,
            @Field("undeterminedMoney") double undeterminedMoney,
            @Field("regularTaxMoney") double regularTaxMoney,
            @Field("overdueFineMoney") double overdueFineMoney,
            @Field("otherMoney") double otherMoney,
            @Field("reviewResults") String reviewResults,
            @Field("supplementaryMaterial") String supplementaryMaterial,
            @Field("specialNote") String specialNote,
            @Field("statusInt") int statusInt
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/getCrDecTemp")
    Observable<BaseResponse<ZQApplyDraft>> getZQApplyDraft(
            @Field("userToken") String userToken,
            @Field("projectId") String userId,
            @Field("type") int type,
            @Field("creditorId") String creditorId
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/addCrDecRevObj")
    Observable<JsonObject> addCrDecRevObj(
            @Field("userToken") String userToken,
            @Field("creditorId") String creditorId,
            @Field("projectId") String projectId,
            @Field("creditorRightReviewID") String creditorRightReviewID,
            @Field("opinion") String opinion,
            @Field("attasJson") String attasJson, //例如:[{attachmentName:"证明.pdf",
            // attachmentDownloadAddress:"/fastdfs/path/upload/12312fsdgswetwjljosa.pdf",attachmentSize:10233123}]
            @Field("type") int type
    );

    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/revObje/detail")
    Observable<JsonObject> getDissentDetail(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("crRevObjeId") String crRevObjeId,
            @Field("creditorId") String creditorId
    );

    @FormUrlEncoded
    @POST("v1/open/api/manager/creditor/rights/revObje/response")
    Observable<JsonObject> responseDissent(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("crRevObjeId") String crRevObjeId,
            @Field("responses") String responses,
            @Field("attasJson") String attasJson //例如:[{attachmentName:"证明.pdf",
            // attachmentDownloadAddress:"/fastdfs/path/upload/12312fsdgswetwjljosa.pdf",attachmentSize:10233123}]
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/saveCrDec")
    Observable<BaseResponse> saveZQApplyDraft(@Field("userToken") String userToken,
                                              @Field("projectId") String projectId,
                                              @Field("type") int type,
                                              @Field("creditorId") String creditorId,
                                              @Field("status") int status,
                                              @Field("creditorRightsId") String creditorRightsId,
                                              @Field("declareAmountPrincipal") String declareAmountPrincipal,
                                              @Field("declareAmountInterest") String declareAmountInterest,
                                              @Field("declareAmountInterestDetail") String declareAmountInterestDetail,
                                              @Field("declareAmountOther") String declareAmountOther,
                                              @Field("declareAmountOtherDetail") String declareAmountOtherDetail,
                                              @Field("declareAmountRegularTax") String declareAmountRegularTax,
                                              @Field("declareAmountOverdueFine") String declareAmountOverdueFine,
                                              @Field("declareAmountTotal") String declareAmountTotal,
                                              @Field("preferredCreditorRights") String preferredCreditorRights,
                                              @Field("guaranteePriority") String guaranteePriority,
                                              @Field("otherPriority") String otherPriority,
                                              @Field("preferredCreditorRightsDetail") String preferredCreditorRightsDetail,
                                              @Field("creditorRightsNote") String creditorRightsNote,
                                              @Field("hasEffectiveJudgment") int hasEffectiveJudgment,
                                              @Field("hasEffectiveJudgmentJson") String hasEffectiveJudgmentJson,
                                              @Field("hasApplyExecution") int hasApplyExecution,
                                              @Field("hasApplyExecutionJson") String hasApplyExecutionJson,
                                              @Field("hasOtherDeclarationFileJson") String hasOtherDeclarationFileJson,
                                              @Field("executiveDetail") String executiveDetail,
                                              @Field("bank") String bank,
                                              @Field("bankBranch") String bankBranch,
                                              @Field("bankAccountName") String bankAccountName,
                                              @Field("bankAccount") String bankAccount
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/addCreditorMobile")
    Observable<JsonObject> addCreditorMobile(
            @Field("userToken") String userToken,
            @Field("projectId") String projectId,
            @Field("creditorId") String creditorId,
            @Field("mobile") String mobile,
            @Field("notifyTypes") String notifyTypes
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/changeCreditorInfoNameMore")
    Observable<JsonObject> changeCreditorInfoNameMore(
            @FieldMap Map<String, String> params
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/change/legalRepresentativeOp")
    Observable<JsonObject> legalRepresentativeOp(
            @FieldMap Map<String, String> params
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/change/legalRepresentative")
    Observable<JsonObject> legalRepresentative(
            @FieldMap Map<String, String> params
    );



    @FormUrlEncoded
    @POST("v1/open/api/creditor/supplementDeclaration")
    Observable<BaseResponse> supplementZQApply(@Field("userToken") String userToken,
                                               @Field("projectId") String projectId,
                                               @Field("type") int type,
                                               @Field("creditorId") String creditorId,
                                               @Field("declareAmountPrincipal") String declareAmountPrincipal,
                                               @Field("declareAmountInterest") String declareAmountInterest,
                                               @Field("declareAmountInterestDetail") String declareAmountInterestDetail,
                                               @Field("declareAmountOther") String declareAmountOther,
                                               @Field("declareAmountOtherDetail") String declareAmountOtherDetail,
                                               @Field("declareAmountRegularTax") String declareAmountRegularTax,
                                               @Field("declareAmountOverdueFine") String declareAmountOverdueFine,
                                               @Field("declareAmountTotal") String declareAmountTotal,
                                               @Field("preferredCreditorRights") String preferredCreditorRights,
                                               @Field("guaranteePriority") String guaranteePriority,
                                               @Field("otherPriority") String otherPriority,
                                               @Field("preferredCreditorRightsDetail") String preferredCreditorRightsDetail,
                                               @Field("creditorRightsNote") String creditorRightsNote,
                                               @Field("hasEffectiveJudgment") int hasEffectiveJudgment,
                                               @Field("hasEffectiveJudgmentJson") String hasEffectiveJudgmentJson,
                                               @Field("hasApplyExecution") int hasApplyExecution,
                                               @Field("hasApplyExecutionJson") String hasApplyExecutionJson,
                                               @Field("hasOtherDeclarationFileJson") String hasOtherDeclarationFileJson,
                                               @Field("executiveDetail") String executiveDetail,
                                               @Field("supplementExplain") String supplementExplain

    );

    @FormUrlEncoded
    @POST("v1/open/api/user/saveCid")
    Observable<JsonObject> saveCid(
            @Field("cid") String cid,
            @Field("appVersion") String appVersion,
            @Field("os") String Os,
            @Field("osVersion") String osVersion,
            @Field("model") String model,
            @Field("manufacturer") String manufacturer
    );

    @FormUrlEncoded
    @POST("v1/open/api/creditor/change/toSelfOp")
    Observable<JsonObject> toSelfOp(
            @Field("cardFileJson") String cardFileJson,
            @Field("cardNumber") String cardNumber,
            @Field("changeDetail") String changeDetail,
            @Field("contact") String contact,
            @Field("creditorId") String creditorId,
            @Field("creditorName") String creditorName,
            @Field("email") String email,
            @Field("otherContact") String otherContact,
            @Field("projectId") String projectId,
            @Field("provideCardInt") String provideCardInt,
            @Field("sysAddressId") String sysAddressId,
            @Field("type") String type,
            @Field("userToken") String userToken
    );

    //未发送审查意见 页面（管理人）：
    @FormUrlEncoded
    @POST("v1/open/api/user/projectNotice")
    Observable<JsonObject> getProjectNotice(
            @Field("userToken") String userToken
    );

}
